/**
 * - 作者: DoooReyn
 * - 日期: 2023.10.29
 */

/** 池子中的对象接口 */
export interface PoolObject {
    /** 使用 */
    use(): void;

    /** 回收 */
    recycle(): void;
}

/** 对象池接口 */
export interface PoolImpl<T extends PoolObject> {
    /** 当前池子中剩余的对象数量 */
    get size(): number;

    /** 预加载 */
    preload(): void;

    /** 创建对象 */
    create(): T;

    /** 获取对象 */
    get(): T;

    /** 回收对象 */
    put(obj: T): void;

    /** 清空对象池（需要再次调用预加载，才能回满池子） */
    clear(): void;
}
